//定义一个Cat结构体，将Cat的各个属性/字段信息，放入Cat结构体进行管理
package main

import "fmt"

// type Cat struct {
// 	Name  string
// 	Age   int
// 	Color string
// 	Hobby string
// }

// type Person struct {
// 	Name   string
// 	Age    int
// 	Scores float64
// 	ptr    *int
// 	slice  []int
// 	map1   map[string]string
// }

type Monster struct {
	Name string
	Age  int
}

func main() {
	var monster1 Monster
	monster1.Age = 500
	monster1.Name = "黄袍怪"
	fmt.Println(monster1)

	//结构体值值类型，不同结构体变量的字段是独立的，互不影响
	monster2 := monster1
	monster2.Name = "青牛精"
	fmt.Println(monster2)

	// var p1 Person
	// fmt.Println(p1)
	// //引用类型的默认值都是 nil
	// if p1.ptr == nil {
	// 	fmt.Println("ok1")
	// }
	// if p1.slice == nil {
	// 	fmt.Println("ok2")
	// }
	// if p1.map1 == nil {
	// 	fmt.Println("ok3")
	// }
	// p1.slice = make([]int, 10)
	// p1.slice[0] = 100
	// fmt.Println(p1)
	// p1.map1 = make(map[string]string)
	// p1.map1["key1"] = "tom1"

	// var cat1 Cat
	// cat1.Name = "UK short cat"
	// cat1.Age = 3
	// cat1.Color = "white"
	// cat1.Hobby = "jump"
	// fmt.Println("cat1=", cat1)
	// fmt.Println("name=", cat1.Name)
	// fmt.Println("age=", cat1.Age)
	// fmt.Println("color=", cat1.Color)
	// fmt.Println("hobby=", cat1.Hobby)

}
